﻿#pragma once
#include "zyCommandCtrol.h"

namespace DarkMoonUI {

	class zyScrollBar : public  zyCommandCtrol
	{
	public:
		zyScrollBar();
		~zyScrollBar();
		void _初始化滚动条();
		static void  WINAPI zyScrollBar_Destroy(zyObject* obj);
		static LRESULT WINAPI zyScrollBar_ChildWndProc(zyObject* obj, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL* bHandle);
		static LRESULT  WINAPI zyScrollBar_WndProc(zyObject* obj, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL* bHandled);
		void OnNCDestroy();
		BOOL 创建(HWND 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 120 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		BOOL 创建(zyWindow& 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 120 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		int 位置(int 参数_位置 = -1);
		//@别名 行改变值()
		INT 行改变值(INT value);
		//@备注 取或置滚动条的最小位置
		//@参数 参数留空则取,否则位置,默认为空
		//@返回 留空则返回最小位置
		//@别名 最小位置(位置)
		INT 最小位置(INT pos = NULL);
		//@备注 取或置滚动条的最大位置
		//@参数 参数留空则取,否则位置,默认为空
		//@返回 留空则返回最大位置
		//@别名 最大位置(位置)
		INT 最大位置(INT pos = NULL);
		//@备注 取或置滚动条的页改变值
		//@参数 参数留空则取,否则位置,默认为空
		//@返回 留空则返回最大位置
		//@别名 页改变值(值)
		INT 页改变值(INT value = NULL);
		bool 绑定窗口句柄(HWND 参数_窗口句柄);
		bool 绑定(HWND 参数_父窗口, int 参数_资源ID, bool 参数_使用默认字体 = true);
		//@备注 函数 整型 OnPosChange(HWND hWnd,整型 位置)
		void 事件_位置被改变(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnPosChange", 参数_事件指针); }
	};

}

